package modelo.estatico.pared;
import java.awt.Rectangle;

import ar.uba.fi.algo3.titiritero.ObjetoVivo;
import ar.uba.fi.algo3.titiritero.Posicionable;


import modelo.Posicion;
import modelo.Vector;
import modelo.estatico.Estatico;
import modelo.proyectil.Proyectil;
import modelo.tanque.Tanque;



public abstract class Pared implements Estatico, ObjetoVivo, Posicionable {

    protected Posicion posicion; 
	protected int resistenciaDeGolpes;
	private boolean vivo=true;
	protected int ancho = 25;
	protected int alto = 25;
	private int intensidadDeRebote = 6;
	
	public Pared(){}
	
	public void setPosicion(Posicion p) {
		posicion = p;
		
	}
	
	public int getIntensidadDeRebote(){
		return intensidadDeRebote;
	}
	
	public Posicion getPosicion() {
		return this.posicion;
	}
	
	@Override
	public Rectangle getBordes() {
		return new Rectangle(this.posicion.getX(),this.posicion.getY(),this.getAncho(),this.getAlto());
	}

	@Override
	public void colisionarConProyectil(Proyectil p) {
		this.resistenciaDeGolpes --;	
	}
	
	
	public void colisionarConTanque(Tanque t) {
		t.setDireccion(new Vector(0,0));
}

	public boolean estaVivo() {
		return vivo;
	}
	public int getAncho() {
		return this.ancho;
	}
	public int getAlto() {
		return this.alto;
	}
	
	public void chequearVida(){
		if (resistenciaDeGolpes <=0)
			vivo=false;
	}
	
	public void vivir(){
		 chequearVida();	
		}
	
	public int getX(){
		return this.posicion.getX();
	}

	public int getY(){
		return this.posicion.getY();
	}
	
	public Vector getDireccion(){
		return new Vector(0, 1);
	}
	
	public String guardarSe() {
		String salida = "<Objeto Tipo=\"";
		salida += getNombreClase();
		salida += "\" PosX=\"";
		salida += this.posicion.getX();
		salida += "\" PosY=\"";
		salida += this.posicion.getY();
		salida += "\" ResistenciaDeGolpes=\"";
		salida += this.resistenciaDeGolpes;
		salida += "\" />\r";
		return salida;
	}	
	
	public abstract String getNombreClase();
	
	protected void setResistenciaDeGolpes(int resistencia) {
		this.resistenciaDeGolpes = resistencia;
	}
}